今天我過得很充實,
前幾天有看到讀者的留言
很感激你們願意花時間看我的文章
看我分享我每日小生活
為了慶祝第15天鐵人文已經一半ㄌ
我正事結束後搭捷運去文心森林公園散步思考人生
沒想出啥解決之道,就跑去吃肉圓-35元(我吃貨我驕傲
皮Q彈肉扎實醬料恰到好處
還有綜合湯-20元(豆腐魚丸和豬血)
55元就讓我感到幸福,心花開 :)
晚上參加黑客社和台科資安社線上社課
有來聽的朋友,下面留言讓我知道你:)
8:00又趕去上北運的 tabata 團課
此時此刻在打鐵人文
我在做我想做的事,所以忙得很值得 心甘情願
對比去年的自己我知道我有進步,勇敢跨出舒適圈
好啦,我話撈完畢,開始解題吧
This vault uses some complicated arrays! I hope you can make sense of it, special agent. The source code for this vault is here: VaultDoor1.java
Hints
Look up the charAt() method online.
先打開 VaultDoor1.java
import java.util.*;
class VaultDoor1 {
public static void main(String args[]) {
VaultDoor1 vaultDoor = new VaultDoor1();
Scanner scanner = new Scanner(System.in);
System.out.print("Enter vault password: ");
String userInput = scanner.next();
String input = userInput.substring("picoCTF{".length(),userInput.length()-1);
if (vaultDoor.checkPassword(input)) {
System.out.println("Access granted.");
} else {
System.out.println("Access denied!");
}
}
// I came up with a more secure way to check the password without putting
// the password itself in the source code. I think this is going to be
// UNHACKABLE!! I hope Dr. Evil agrees...
//
// -Minion #8728
public boolean checkPassword(String password) {
return password.length() == 32 &&
password.charAt(0) == 'd' &&
password.charAt(29) == '3' &&
password.charAt(4) == 'r' &&
password.charAt(2) == '5' &&
password.charAt(23) == 'r' &&
password.charAt(3) == 'c' &&
password.charAt(17) == '4' &&
password.charAt(1) == '3' &&
password.charAt(7) == 'b' &&
password.charAt(10) == '_' &&
password.charAt(5) == '4' &&
password.charAt(9) == '3' &&
password.charAt(11) == 't' &&
password.charAt(15) == 'c' &&
password.charAt(8) == 'l' &&
password.charAt(12) == 'H' &&
password.charAt(20) == 'c' &&
password.charAt(14) == '_' &&
password.charAt(6) == 'm' &&
password.charAt(24) == '5' &&
password.charAt(18) == 'r' &&
password.charAt(13) == '3' &&
password.charAt(19) == '4' &&
password.charAt(21) == 'T' &&
password.charAt(16) == 'H' &&
password.charAt(27) == 'f' &&
password.charAt(30) == 'b' &&
password.charAt(25) == '_' &&
password.charAt(22) == '3' &&
password.charAt(28) == '6' &&
password.charAt(26) == 'f' &&
password.charAt(31) == '0';
}
}
提示告訴我們要去查charAt()函式
我很貼心幫大家找了教學,請服用[http://tw.gitbook.net/java/java_string_charat.html]
一言以蔽之就是返回索引值的字符。注意索引值是從 0 開始
“Coding” 一共有 6 個字符
charAT(0) 就是 C
charAt(1) 就是 o
charAt(2) 就是 d
這題跟昨天一樣,不需要任何逆向技巧
只需耐心就好
從索引值 0 開始一值到索引值 31 ,總共 32 位的長度,
重組一遍就會知道密碼是什麼。
但我等等還要做圖,就先不排囉
大家晚安